#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
#include <ctype.h>

// 常量定义
#define IMAGE_PATH "/mnt/snap_files/" // 图片存储路径
#define VIDEO_PATH "/mnt/record_files/" // 图片存储路径

#define MAX_FILENAME_LEN 128  // 最大文件名长度
#define FILES_PER_PAGE 20     // 每页文件数量

typedef enum {
    SORT_BY_TIME_ASC,  // 按时间升序
    SORT_BY_TIME_DESC // 按时间降序
} NetworkContorlFileSortType;

// 文件查询参数结构体
typedef struct {
    int page;        // 文件分页，【>=1：第几页文件】
    NetworkContorlFileSortType sort; // 排序方式
    int start_time;  // 开始时间 (时间戳)
    int end_time;    // 结束时间 (时间戳)
} QueryParameters;

// 文件信息结构体
typedef struct {
    char filename[MAX_FILENAME_LEN]; // 文件名
    int size;                        // 文件大小 (字节)
    int start_time;                  // 创建时间 (时间戳, 从文件名解析)
    int end_time;                    // 结束时间 (对于图片，通常与 start_time 相同或为 0)
} FileInfo;

// 查询结果结构体
typedef struct {
    int file_num;              // (符合条件的)文件总数
    int page_num;              // 文件总页数
    int cur_page;              // 当前页数
    int num;                   // 当前页包含的文件信息数量
    FileInfo info[FILES_PER_PAGE]; // 当前页的文件信息数组
} QueryResult;

/**
 * @brief 查询指定目录下的图片文件
 *
 * @param params 查询参数
 * @param result 查询结果 (由调用者分配内存)
 * @return int 0 表示成功，-1 表示失败 (例如目录打不开等)
 */
int query_images(const QueryParameters *params, QueryResult *result, int type);